package com.wbc.utils;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * @author wangbingchen
 * java 实现 js 方法调用
 * @since 2022-05-12
 **/
public class ScriptUtil {

    private ScriptUtil(){}

    private static ScriptEngine js = new ScriptEngineManager().getEngineByExtension("js");


    /**
     * escape() 函数可对字符串进行编码，这样就可以在所有的计算机上读取该字符串。
     *
     * 该方法不会对 ASCII 字母和数字进行编码，也不会对下面这些 ASCII 标点符号进行编码： * @ - _ + . / 。其他所有的字符都会被转义序列替换。
     *
     * 提示： 使用 unescape() 方法对字符串进行解码。
     * @param text
     * @return
     */
    public static String escape(String text) {
        return eval("escape('"+text+"')");
    }

    /**
     * 将输入的字符串当成 js 解析
     * @param text
     * @return
     */
    public static String eval(String text) {
        try {
            Object eval = js.eval(text);
            return eval.toString();
        } catch (ScriptException e) {
            e.printStackTrace();
        }
        return null;
    }

}
